package cn.lg.soar.system.monitor.entity;

import cn.lg.soar.database.translate.TranslateByEntity;
import cn.lg.soar.system.api.handler.translate.TranslateByDict;
import cn.lg.soar.system.auth.entity.User;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Getter;
import lombok.Setter;

import java.time.LocalDateTime;

/**
 * @author luguoxiang
 * @date 2021/9/5
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
@TableName("lg_sys_token_info")
@Getter
@Setter
public class RefreshToken {

    /**
     * 用于新增互斥（单端在线，平台互斥）
     */
    @TableId(type = IdType.INPUT)
    private String id;

    /**
     * 用于删除和验证时判断
     */
    @JsonIgnore
    private Long value;

    /**
     * 用户id
     */
    @TranslateByEntity(value = User.class, label = "nickname")
    private Long userId;

    /**
     * 设备类型
     */
    @TranslateByDict("DeviceTypeEnum")
    private Integer deviceType;

    /**
     * 登录IP
     */
    private Integer ip;

    /**
     * 到期时间
     */
    private LocalDateTime expires;

    /**
     * token有效期（是否在线）
     */
    @JsonIgnore
    private LocalDateTime tokenExpires;

}
